#创建集合set，set()用来创建集合的函数，type()用来查看数据类型
#1，可以使用大括号来进行创建
s = {1,2,3,4}
#2，使用set()函数来进行创建
ss = set('1234')
print(type(s))
print(type(ss))



#集合的添加和删除
#添加元素
s.add(6)
print(s)
#删除集合中的第一个元素
s.pop()
print(s)
#删除集合中的元素
s.remove(4)
print(s)


#创建元组
#创建空元组
tuple1 = ()
print(tuple1)
#创建带有元素的元组，可以有元素类型
tuple2 = (1,"a",3,"hello",2.2)
print(tuple2)
#创建只有一个元素的元组
tuple3 = (1,)
print(type(tuple3))

##使用tuple()函数将其他数据类型转换为元组类型
#语法格式:tuple(数据)
#将字符串转换成元组
tuple1 = tuple('hello，world')
print(tuple1)

#将列表转换成元组
list1 = ['python','java','c++','c']
tuple2 = tuple(list1)
print(tuple2)


#从开始索引开始截取，截止到结束索引之前
tuple1 = ('h''e''l''l''o')
#是哦用索引访问元组中的某个元组
#是哦用正数索引，从0开始
print(tuple1[2])
#使用负数索引，倒序从-1开始
print(tuple1[-4])


#使用切片访问元组中的一组元组，前闭后开
#使用正数切片
print(tuple1[1:4])
#指定步长
print(tuple1[1:4:2])
#使用附属切片
print(tuple1[-5:-1])









#     修改元组元素
# tuple1 = (12, 34, 56)
# tuple2 = ('abc', 'mn')
#      修改元组玄素操作是非法的
#  tuple1[0] = 200
#  tuple1[0] = 100
#      链接元组创建一个新的元组，两个数觉必须是元组
# tuple3 = tuple1 + tuple2
# print(tuple3)
#     删除元组
# t1 = (1,2,34,56)
# del t1
# print(t1)


# 使用input方法输入联系人姓名,电话,邮件,地址；
n = input('请输入联系人姓名')  # name
t = input('请输入联系人电话')  # telephone
e = input('请输入邮箱地址')    # email
a = input('请输入联系地址')
tuple1 = ('姓名', n ,'电话', t ,'地址',a)
print(tuple1)



# 使用[]创建列表
#  创建空列表
l1 = []
print(l1)
# 创建一个带有元素的列表
l2 =[1,2,3,4,'python',2.2]
print(l2)
print(type(l2))
# 使用list函数将其他函数转为列表
# 创建空列表
l1 = list()
print(l1)
# 1,转化字符串
l3 = list('hello')
print(l3)
# #
# 2.转化元组
t1 = tuple('hellp')
l4 = list(t1)
print(l4)
#
# 3.转化range函数
r1 = range(5)   #0,1,2,3,4
l5 = list(r1)
print(l5)


访问列表中的元素
使用索引访问元素实例
使用索引访问列表中的某个元素


list1=['p','y','t','h','o','n']
# 使用正数索引
print(list1(2))
# 使用负数索引
print(list1(-3))
# 受用索引访问列表中的元素
l = ['p','y','t','h','o','n']


# 使用切片形式访问列表中的元素
l2 =['p','y','t','h','o','n']
# 正数切片 截取索引为2,3,4的元素，默认步长为1
print(l2[2:5])
# 取索引3-5的元素，末尾
print(l2[3:])
# 取索引0-2的元素，开头
print(l2[:3])
# 取索引1-5，步长为2
print(l2[1::2])
# 使用负切片，取后三个元素
print(l2[-3:])
#使用负切片，取-5——-1，步长为2
print(l2[-5:-1:2])

#遍历循环
list = ['python','java','c']
# 使用for循环遍历列表
# for item in list1:
#     print(item)
l3 = ['python','java','c','r','go']
for i in l3:
    print(i)

# 修改列表元素
#修改单个元素
l4 = [10,56,34,2,56,44,7]
#将索引位2的元素修改为100
l4[2] = 100
print(l4)
#修改多个元素
l5 = [10,56,34,2,56,44,7]
#修改1-4个元素的值（不包括四个元素）
l5[1:4:1] = [45,-56,98]
print(l5)


#列表中添加元素
# 1，append()用于在列表的末尾住家元素
l6 = ['1','2','3']
l6.append('30')
print(l6)
#列表中添加列表
l6.append('3','4')
print(l6)








##2.extend()再列表的末尾一次添加多种元素
l13 = ['a', 'b', 'c']
l13.extend('d')
print(l13)
#列表添加元素
l13.extend(['e','f','g','h'])
print(l13)
l13.extend('world')
print(l13)


#3.insert()在列表中的特定位置添加想要添加的特定元素
l14 = ['python','c','java']
#插入元素，在索引处为2插入go元素
l14.insert(2,'go')
print(l14)

#删除元素
#remove删除:remove()方法是移除掉列表里面的特定元素，但是会删除第一个和指定值相同的的元素，而且必须保证该元素是存在的，否则会引发valueerror 错误
l15 =['a','b','c','d']
l15.remove('a')
print(l15)

## pop()方法用来删除列表中指定索引处的元素
l16 = [1,3,4,5,6,7,8,9]
l16.pop(4)
##删处索引为3的元素
l16.pop(3)
print(l16)
#删除最后一个元素
l16.pop()
print(l16)

##del可以用来删除列表中得个元素或者一段连续的元素
l17 =['a','b','c','d','e']
#删除索引为1的元素
del l17[1]
print(l17)
l18 =[10,56,34,2,58,44,7]
#删除索引为1-3的元素
del l18[1:4]
print(l18)
#删除单个元素
l17 = [1,4,8,5,6,3,2]
del l17[5]
print(l17)
#删除8 5 6 这三个元素
del l17[2:5]
print(l17)
#若将列表中的所有元素删除，可以使用clear方法
l19 = ['a','b','c','a']
#清空列表
l19.clear()
print(l19)


##########任务
#创建两个弄列表name_list和phone_list，用于存储联系人姓名和电话
#向列表中添加联系人信息
#输入联系人编号修改信息
#输入联系人编号删除信息
#使用clear()清空通讯录。name_list['张三'，‘李四’，‘王五’ ‘’马六],,phone_list=[123, 236, 258, 598]
name_list = []
phone_list = []
while 1:
    print("菜单:1.添加联系人 2.修改联系人 3.删除联系人")
    chioce = input("请输入选择:")
    #1.添加联系人，包括姓名，手机号
    if chioce == "1":
        name_list.append(input("请输入联系人姓名"))
        phone_list.append(input("请输入联系人手机号："))
        print(name_list)
        print(phone_list)
# 2.修改联系人信息
    elif chioce == "2":
        num = int(input("请输入联系人编号："))
        if len(name_list) > 0 and num <=len(name_list):
            name_list[num-1] = input("修改联系人姓名：")
            phone_list[num-1] = input("修改联系电话")
        else:
            print("联系人编号输入有误")
    # 3.删除联系人信息
    elif chioce == "3":
        num = int(input("请输入联系人编号："))
        if len(name_list) > 0 and num <=len(name_list):
            name_list.pop(num-1)
            phone_list.pop(num-1)
        else:
            print("显示联系人信息")
            print(name_list)
            print(phone_list)














# 查找元素
ls1 = [1, 3, 5, 7, 'a', 'b', 8, 3, 'b', 2]
print(ls1.index(3))
print(ls1.index('b', 6))
print(ls1.index('b', 6, 9))
# print(ls1.index(0))     #  数据本身错误，不用管


#count()方法用来统计某个元素在列表中出现的次数，列表名.count(统计的value元素)
ls2 = [1,3,5,7,'a','b',8,3,'b',2,5,7,1]
print(ls2.count(5))
print(ls2.count(0))
print(ls2.count('b'))


# 元素排序sort函数用于对原列表进行排序，如果指定参数，则使用指定的比较函数
# 语法格式为：ls.sort(key=None,reverse=false)
# 1，元素是字符串的排序
ls3 = ["1","3","44","23","99","88","56",]
# 默认升序
ls3.sort()
print(ls3)
# 降序 reverse=ture
ls3.sort(reverse=True)
print(ls3)

# 2.元素是数值的排序
ls4 = [1,3,44,23,99,88,56]
# 默认升序
ls4.sort()
print(ls4)
# 降序 reverse=True
ls4.sort(reverse=True)
print(ls4)



'字典'
#字典的创建
#1，使用{}创建语法格式
#字典名 = {'key1':'value1','key2':'value2'.}
#使用字符串作为key
d1 ={'数学':95,'英语':95,'语文':95,}
print(type(d1))
#使用元祖和数字作为key
d2 ={(20,30):'great',30:[1,2,3]}
print(type(d2))
#创建空元组
d3 ={}
print(d3)
##
#
# 2.用dict()方法通过关键字的参数来创建字典格式
#字典名 = dict(,str1 = value1,,str2 = value2,str3 = value3
d4 = dict(数学=90,语文=89,英语=88)
print(d4)
#字典元素的访问
#1、字典名[key]
d5={'数学':95,'英语':92,'语文':84}
#键存在，返回的是值value
print(d5['英语'])
#键不存在，会引发一个keyerrar错误
print(d5['Python'])

#2、get（）方法来获得指定键对应的值，语法格式，字典名.get（key[,default]）
d6={'数学':95,'英语':92,'语文':84}
#键存在
print(d6.get('语文'))
#键存在，不写default，会返回None
print(d6.get('python'))
print(d6.get('python','该键不存在'))

##字典添加键值对
d7={'数学':95,'英语':92,'语文':84,'python':99}
d7['可视化']=99
print(d7)

##字典修改键值对
d8={'数学':95,'英语':92,'语文':84,'python':99}
d8['英语']=100
print(d8)

#字典删除键值对
d9={'数学':95,'英语':92,'语文':84,'python':99}
#1、使用del关键字
del d9['语文']
print(d9)
#2、使用pop（）方法
d9.pop('英语')
print(d9)